package it.azienda.managerworkstandard.modello;

import it.azienda.framework.persistenza.DAOConnectionSingleton;
import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import org.hibernate.Session;

/**
 *
 * @author MCignarale
 */
public class BeanGeneraFattura implements Serializable {

    public BeanGeneraFattura() {
        this.beanCliente = new BeanCliente();
    }

    private BeanCliente beanCliente = new BeanCliente();
    private SelectItem[] listaClienti;
    private java.lang.Integer idCliente;
    private ArrayList listaDdt = new ArrayList();
    private SelectItem[] listaClientiOrdini;
    private SelectItem[] listaClientiPreventivi;

    public BeanCliente getBeanCliente() {
        return beanCliente;
    }

    public void setBeanCliente(BeanCliente beanCliente) {
        this.beanCliente = beanCliente;
    }

    public SelectItem[] getListaClienti() {
        ArrayList lista = null;
        Session session = null;
        try {
            session = DAOConnectionSingleton.newSession();
            lista = (ArrayList) session.createQuery("SELECT distinct clienti FROM BeanCliente clienti, BeanDdt ddt"
                    + " where clienti.id = ddt.beanCliente.id"
                    + " and ddt.scaricato = 'N'"
                    + " order by clienti.ragioneSociale").list();
        } catch (Exception ex) {
            System.out.println("Errore: " + ex);
        } finally {
            DAOConnectionSingleton.closeSession();
        }
        if (lista != null) {
            listaClienti = new SelectItem[lista.size() + 1];
            BeanCliente item = new BeanCliente();
            listaClienti[0] = new SelectItem("", "");
            for (int i = 0; i < lista.size(); i++) {
                item = (BeanCliente) lista.get(i);
                listaClienti[i + 1] = new SelectItem(item.getId().toString(), item.getCodice().toString() + " - " + item.getRagioneSociale());
            }
        } else {
            listaClienti = new SelectItem[1];
            BeanCliente item = new BeanCliente();
            listaClienti[0] = new SelectItem("0", "");
        }
        return listaClienti;
    }

    public void setListaClienti(SelectItem[] listaClienti) {
        this.listaClienti = listaClienti;
    }

    public java.lang.Integer getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(java.lang.Integer idCliente) {
        this.idCliente = idCliente;
    }

    public ArrayList getListaDdt() {
        return listaDdt;
    }

    public void setListaDdt(ArrayList listaDdt) {
        this.listaDdt = listaDdt;
    }

    /**
     * @return the listaClientiOrdini
     */
    public SelectItem[] getListaClientiOrdini() {
        ArrayList lista = null;
        Session session = null;
        try {
            session = DAOConnectionSingleton.newSession();
            lista = (ArrayList) session.createQuery("SELECT distinct clienti "
                    + " FROM BeanCliente clienti, BeanOrdiniPrev ddt"
                    + " where clienti.id = ddt.beanCliente.id"
                    + " and ddt.scaricato = 'N'"
                    + " and ddt.tipoDocumento = 'Ordine'"
                    + " order by clienti.ragioneSociale")
                    .list();
        } catch (Exception ex) {
            System.out.println("Errore: " + ex);
        } finally {
            DAOConnectionSingleton.closeSession();
        }
        if (lista != null) {
            listaClientiOrdini = new SelectItem[lista.size() + 1];
            BeanCliente item = new BeanCliente();
            listaClientiOrdini[0] = new SelectItem("", "");
            for (int i = 0; i < lista.size(); i++) {
                item = (BeanCliente) lista.get(i);
                listaClientiOrdini[i + 1] = new SelectItem(item.getId().toString(), item.getCodice().toString() + " - " + item.getRagioneSociale());
            }
        } else {
            listaClientiOrdini = new SelectItem[1];
            BeanCliente item = new BeanCliente();
            listaClientiOrdini[0] = new SelectItem("0", "");
        }
        return listaClientiOrdini;
    }

    /**
     * @param listaClientiOrdini the listaClientiOrdini to set
     */
    public void setListaClientiOrdini(SelectItem[] listaClientiOrdini) {
        this.listaClientiOrdini = listaClientiOrdini;
    }

    /**
     * @return the listaClientiPreventivi
     */
    public SelectItem[] getListaClientiPreventivi() {
        ArrayList lista = null;
        Session session = null;
        try {
            session = DAOConnectionSingleton.newSession();
            lista = (ArrayList) session.createQuery("SELECT distinct clienti FROM BeanCliente clienti, BeanOrdiniPrev ddt"
                    + " where clienti.id = ddt.beanCliente.id"
                    + " and ddt.scaricato = 'N'"
                    + " and ddt.tipoDocumento = 'Preventivo'"
                    + " order by clienti.ragioneSociale").list();
        } catch (Exception ex) {
            System.out.println("Errore: " + ex);
        } finally {
            DAOConnectionSingleton.closeSession();
        }
        if (lista != null) {
            listaClientiPreventivi= new SelectItem[lista.size() + 1];
            BeanCliente item = new BeanCliente();
            listaClientiPreventivi[0] = new SelectItem("", "");
            for (int i = 0; i < lista.size(); i++) {
                item = (BeanCliente) lista.get(i);
                listaClientiPreventivi[i + 1] = new SelectItem(item.getId().toString(), item.getCodice().toString() + " - " + item.getRagioneSociale());
            }
        } else {
            listaClientiPreventivi = new SelectItem[1];
            BeanCliente item = new BeanCliente();
            listaClientiPreventivi[0] = new SelectItem("0", "");
        }
        return listaClientiPreventivi;
    }

    /**
     * @param listaClientiPreventivi the listaClientiPreventivi to set
     */
    public void setListaClientiPreventivi(SelectItem[] listaClientiPreventivi) {
        this.listaClientiPreventivi = listaClientiPreventivi;
    }

}
